/**
 * set数据结构
 *  es6提供了新的数据结构Set，它类似于数组，但是成员的值都是唯一的，没有重复的值
 */

//  通常应用于搜索框历史关键词
// const s = new Set()  // 初始值可以为空
// const s = new set(document.querySelectorAll(div)) // 初始值也可以是个伪数组
var arr = [1, 2, 3, 4, 4, 4, 4, 5, 5];
const s = new Set(arr);

// 数组去去重
var newArr = [...s];
console.log(newArr); // [ 1, 2, 3, 4, 5 ]

// Array.from转成数组
var newArr2 = Array.from(s);
console.log(newArr2); // [ 1, 2, 3, 4, 5 ]

// size查看成员数量
console.log(s.size); // 5

// add 添加成员
s.add(6);
console.log(s); // Set { 1, 2, 3, 4, 5 6 }

// delete 删除成员
s.delete(6);
console.log(s); // Set { 1, 2, 3, 4, 5 }

// has，判断是否包含某个成员
console.log(s.has(5)); // true

// clear，清空所有的成员
s.clear();
console.log(s); // Set {}

/**
 * （1）keys()，values()，entries()
 * Set.prototype.keys()：返回键名的遍历器
 * Set.prototype.values()：返回键值的遍历器
 * Set.prototype.entries()：返回键值对的遍历器
 * 注意，返回的是[Set Iterator] {  }，可迭代的遍历器
 * 通常结合 for of 或者 forEach来使用
 */
for (let item of s.values()) {
  console.log(item); // 1 2 3 4 5
}

